/**
 * 性能优化配置
 */

// 组件加载策略配置
export const componentLoadingConfig = {
  // 立即加载的组件类型
  immediate: ['text', 'button'],
  
  // 延迟加载的组件类型
  lazy: ['image', 'container'],
  
  // 预加载策略
  preload: {
    // 基础组件预加载
    basic: ['text', 'button'],
    // 媒体组件预加载
    media: ['image'],
    // 布局组件预加载
    layout: ['container']
  },
  
  // 组件优先级
  priority: {
    'text': 1,      // 最高优先级
    'button': 1,    // 最高优先级
    'image': 2,     // 中等优先级
    'container': 3  // 低优先级
  },
  
  // 组件包大小估算（KB）
  size: {
    'text': 2,
    'button': 3,
    'image': 5,
    'container': 2
  }
}

// 代码分割配置
export const codeSplittingConfig = {
  // 主包大小限制
  mainBundleSizeLimit: 500, // KB
  
  // 组件包大小限制
  componentBundleSizeLimit: 100, // KB
  
  // 异步加载超时时间
  asyncLoadTimeout: 5000, // ms
  
  // 预加载并发数
  preloadConcurrency: 3
}

// 缓存配置
export const cacheConfig = {
  // 组件缓存时间
  componentCacheTime: 5 * 60 * 1000, // 5分钟
  
  // 最大缓存组件数
  maxCachedComponents: 50,
  
  // 缓存清理策略
  cleanup: {
    // 自动清理间隔
    interval: 10 * 60 * 1000, // 10分钟
    // 清理策略：LRU
    strategy: 'lru'
  }
}

// 性能监控配置
export const monitoringConfig = {
  // 是否启用性能监控
  enabled: true,
  
  // 监控指标
  metrics: {
    // 组件加载时间
    componentLoadTime: true,
    // 渲染时间
    renderTime: true,
    // 内存使用
    memoryUsage: true,
    // 网络请求
    networkRequests: true
  },
  
  // 性能阈值
  thresholds: {
    // 组件加载时间阈值
    componentLoadTime: 100, // ms
    // 渲染时间阈值
    renderTime: 16, // ms (60fps)
    // 内存使用阈值
    memoryUsage: 100 * 1024 * 1024 // 100MB
  }
}

// 优化策略配置
export const optimizationConfig = {
  // 虚拟滚动配置
  virtualScroll: {
    enabled: true,
    itemHeight: 60, // px
    bufferSize: 5
  },
  
  // 防抖节流配置
  debounceThrottle: {
    // 搜索防抖时间
    searchDebounce: 300, // ms
    // 拖拽节流时间
    dragThrottle: 16, // ms (60fps)
    // 滚动节流时间
    scrollThrottle: 16 // ms (60fps)
  },
  
  // 图片优化
  imageOptimization: {
    // 懒加载
    lazyLoad: true,
    // 预加载
    preload: true,
    // 压缩质量
    quality: 0.8
  }
}

// 开发环境配置
export const devConfig = {
  // 是否启用热更新
  hotReload: true,
  
  // 是否启用源码映射
  sourceMap: true,
  
  // 是否启用性能警告
  performanceWarnings: true,
  
  // 开发工具配置
  devtools: {
    // Vue DevTools
    vue: true,
    // 性能面板
    performance: true
  }
}

// 生产环境配置
export const prodConfig = {
  // 是否启用代码压缩
  minify: true,
  
  // 是否启用Tree Shaking
  treeShaking: true,
  
  // 是否启用代码分割
  codeSplitting: true,
  
  // 是否启用预加载
  preload: true,
  
  // 是否启用Service Worker
  serviceWorker: false
} 